home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 576-600 / 581 / prism / source / source.lzh / config.c next >
C/C++ Source or Header  |  1991-12-05  |  5KB  |  200 lines

  1. /**********************************************************************
  2.  *         PRISM Configuration Editor routine ...                *
  3.  *                                      *
  4.  *         Written by Syd L. Bolton  Copyright (c)1991               *
  5.  *         Legendary Design Technologies Inc.              *
  6.  *             Freely Redistributable                  *
  7. \**********************************************************************/
  8.  
  9. #include "config.h"
  10. #include "mx.c"
  11.  
  12. configure()
  13. {
  14. struct IntuiMessage *message;
  15. struct Window *ConfigWindow;
  16. struct RastPort *Crp;
  17. ULONG class;
  18. int configexit=0;
  19.  
  20. ChangeSprite(&WorkScreen->ViewPort,&Cursor,ChipBlank);
  21. maxcolor=(1 << WorkScreen->RastPort.BitMap->Depth)-1;
  22. NewWindowStructure1.BlockPen=maxcolor;
  23. NewWindowStructure1.Screen=WorkScreen;
  24. /*** I know I should have put these in an array .. but I didn't. OH well */
  25. IText1.FrontPen=maxcolor; IText2.FrontPen=maxcolor;
  26. IText3.FrontPen=maxcolor; IText4.FrontPen=maxcolor;
  27. IText5.FrontPen=maxcolor; IText6.FrontPen=maxcolor;
  28. IText7.FrontPen=maxcolor; IText8.FrontPen=maxcolor;
  29. IText9.FrontPen=maxcolor; IText10.FrontPen=maxcolor;
  30. IText11.FrontPen=maxcolor; IText12.FrontPen=maxcolor;
  31. IText13.FrontPen=maxcolor; IText14.FrontPen=maxcolor;
  32. IText15.FrontPen=0; IText15.BackPen=maxcolor-1;
  33. IText16.FrontPen=0; IText16.BackPen=maxcolor-1;
  34. IText17.FrontPen=0; IText17.BackPen=maxcolor-1;
  35.  
  36. /** Set up current settings **/
  37. sprintf(Gadget8SIBuff,"%-3d",tabspace);
  38. if (sclearmode) Gadget2.Flags |= SELECTED;
  39. else Gadget2.Flags &= ~SELECTED;
  40. if (lacemode) Gadget3.Flags |= SELECTED;
  41. else Gadget3.Flags &= ~SELECTED;
  42. Gadget9.Flags &= ~SELECTED; Gadget10.Flags &= ~SELECTED; Gadget11.Flags &= ~SELECTED;
  43. if (speed==0) Gadget11.Flags |= SELECTED;
  44. if (speed==1) Gadget10.Flags |= SELECTED;
  45. if (speed==2) Gadget9.Flags |= SELECTED;
  46. Gadget12.Flags &= ~SELECTED; Gadget13.Flags &= ~SELECTED; Gadget14.Flags &= ~SELECTED;
  47. if (maxcolor==15) Gadget12.Flags |= SELECTED;
  48. if (maxcolor==7) Gadget13.Flags |= SELECTED;
  49. if (maxcolor==3) Gadget14.Flags |= SELECTED;
  50. if (read_dir) Gadget4.Flags |= SELECTED; else Gadget4.Flags &= ~SELECTED;
  51. strcpy(Gadget1SIBuff,WorkFont.ta_Name);
  52. Gadget1SIBuff[30]='\0';
  53. ConfigWindow=OpenWindow(&NewWindowStructure1);
  54. Crp=ConfigWindow->RPort;
  55. PrintIText(Crp,&IntuiTextList1,0,0);
  56. DrawBorder(Crp,&BorderList1,0,0);
  57.  
  58.      do {
  59.     WaitPort(ConfigWindow->UserPort);
  60.     while ((message=(struct IntuiMessage *) GetMsg(ConfigWindow->UserPort))!=NULL) {
  61.         class = message->Class;
  62.         ReplyMsg(message);
  63.         if (class==GADGETUP) configexit=congadget(message,ConfigWindow);
  64.         }
  65.     } while (configexit==0);
  66. CloseWindow(ConfigWindow);
  67. if (configexit==2 || configexit==3) use_changes(maxcolor,lacemode);
  68. if (configexit==3) save_config();
  69. SetWindowSprite();
  70. }
  71.  
  72. save_config()
  73. {
  74. FILE *fp;
  75.  
  76. if (!(fp=fopen("prism.cfg","w"))) {
  77.     GenErrorReq("Couldn't save CONFIG!");
  78.     return();
  79.     }
  80. SetPointer(WorkWindow,&BusyPointer,22,16,0,0);
  81. fputs("VER1\n",fp);    /* write this out in case of later revision */
  82. fprintf(fp,"%s\n",WorkFont.ta_Name);
  83. fprintf(fp,"%d %d %d %d %d %d",speed,maxcolor,read_dir,lacemode,sclearmode,tabspace);
  84. fclose(fp);
  85. ClearPointer(WorkWindow);
  86. }
  87.  
  88. congadget(message,win)
  89. struct IntuiMessage *message;
  90. struct Window *win;
  91. {
  92. struct Gadget *igad;
  93. int gadgid;
  94.  
  95. igad=(struct Gadget *)message->IAddress;
  96. gadgid=igad->GadgetID;
  97.  
  98. switch (gadgid) {
  99.     case 1: return(2);
  100.  
  101.     case 2: return(3);
  102.  
  103.     case 3: return(1);
  104.  
  105.     case 10: GadMXSel(win,&Gadget14,&Gadget12,&Gadget13,&Gadget12);
  106.          break;
  107.  
  108.     case 11: GadMXSel(win,&Gadget13,&Gadget12,&Gadget14,&Gadget12);
  109.          break;
  110.  
  111.     case 12: GadMXSel(win,&Gadget12,&Gadget13,&Gadget14,&Gadget12);
  112.          break;
  113.  
  114.     case 20: GadMXSel(win,&Gadget11,&Gadget9,&Gadget10,&Gadget9);
  115.          break;
  116.  
  117.     case 21: GadMXSel(win,&Gadget10,&Gadget9,&Gadget11,&Gadget9);
  118.          break;
  119.  
  120.     case 22: GadMXSel(win,&Gadget9,&Gadget10,&Gadget11,&Gadget9);
  121.          break;
  122.  
  123.     default: break;
  124.     }
  125. return(0);
  126. }
  127.  
  128. use_changes(omc,olm)
  129. int omc,olm;
  130. {
  131. int maxcol;
  132.  
  133. tabspace=atoi(Gadget8SIBuff);
  134. if (Gadget2.Flags & SELECTED) sclearmode=1; else sclearmode=0;
  135. if (Gadget3.Flags & SELECTED) lacemode=1; else lacemode=0;
  136. if (Gadget12.Flags & SELECTED) maxcol=15;
  137. if (Gadget13.Flags & SELECTED) maxcol=7;
  138. if (Gadget14.Flags & SELECTED) maxcol=3;
  139. if (Gadget11.Flags & SELECTED) speed=0;
  140. if (Gadget10.Flags & SELECTED) speed=1;
  141. if (Gadget9.Flags & SELECTED) speed=2;
  142. if (Gadget4.Flags & SELECTED) read_dir=1; else read_dir=0;
  143.  
  144. if (strcmp(Gadget1SIBuff,WorkFont.ta_Name)) {
  145.     strcpy(WorkFont.ta_Name,Gadget1SIBuff);
  146.     if ((TFont = (struct TextFont *) OpenDiskFont(&WorkFont)) == 0) {
  147.         WorkFont.ta_Name = (STRPTR)"topaz.font";
  148.         WorkFont.ta_YSize = TOPAZ_EIGHTY;
  149.         }
  150.     }
  151.  
  152. Fastest.Flags &= ~CHECKED; TFBaud.Flags &= ~CHECKED; TWBaud.Flags &= ~CHECKED;
  153. if (sclearmode) SClear.Flags |= CHECKED; else SClear.Flags &= ~CHECKED;
  154.  
  155. switch (speed) {
  156.     case 0: Fastest.Flags |= CHECKED;
  157.         break;
  158.  
  159.     case 1: TFBaud.Flags |= CHECKED;
  160.         break;
  161.  
  162.     case 2: TWBaud.Flags |= CHECKED;
  163.         break;
  164.  
  165.     default: break;
  166.     }
  167.  
  168.  
  169. if (omc != maxcol) {
  170.     Forplanes.Flags &= ~CHECKED; Threeplanes.Flags &= ~CHECKED; Twoplanes.Flags &= ~CHECKED;
  171.     switch (maxcol) {
  172.         case 15: Forplanes.Flags |= CHECKED;
  173.              SetupMenu(0,2);
  174.              break;
  175.  
  176.         case  7: Threeplanes.Flags |= CHECKED;
  177.              SetupMenu(0,1);
  178.              break;
  179.  
  180.         case  3: Twoplanes.Flags |= CHECKED;
  181.              SetupMenu(0,0);
  182.              break;
  183.  
  184.         default: break;
  185.         }
  186.     }
  187.  
  188. if (olm != lacemode) {
  189.     if (lacemode==0) {
  190.         FirstWorkScreen.Height=420;
  191.         SetupMenu(2,0);
  192.         }
  193.     else {
  194.         FirstWorkScreen.Height=210;
  195.         SetupMenu(2,0);
  196.         }
  197.     }
  198. maxcolor=maxcol;
  199. }
  200.